package com.avecsys.quotemanager.service.supplier;

import java.util.List;

import com.avecsys.quotemanager.exception.BusinessException;
import com.avecsys.quotemanager.pojos.QuoteTemplateMasterPojo;
import com.avecsys.quotemanager.pojos.SupplierMasterPojo;
import com.avecsys.quotemanager.utils.TransactionStatus;
import com.avecsys.quotemanager.vo.SupplierVO;

/**
 * @author Sam Sundar K
 */
public interface QuoteTemplateMasterService
{

	/**
	 * Method to save or update the supplier Quote Template
	 * 
	 * @param supplierVO
	 * @return TransactionStatus
	 * @throws BusinessException
	 */
	public TransactionStatus saveQuoteTemplateMaster(SupplierVO supplierVO) throws BusinessException;

	/**
	 * Method to List all supplier Quote Templates
	 * 
	 * @param supplierMasterPojo
	 * @return List<QuoteTemplateMasterPojo>
	 * @throws BusinessException
	 */
	public List<QuoteTemplateMasterPojo> getAllSupplierQuoteTemplates(
			SupplierMasterPojo supplierMasterPojo) throws BusinessException;

	/**
	 * Method to get QuoteTemplateMaster information by id
	 * 
	 * @param templateId
	 * @return QuoteTemplateMasterPojo
	 * @throws BusinessException
	 */
	public QuoteTemplateMasterPojo getQuoteTemplateMasterById(Long templateId) throws BusinessException;;

	/**
	 * Method to mark as delete the QuoteTemplateMaster Information
	 * 
	 * @param supplierMasterPojo
	 * @return TransactionStatus
	 * @throws BusinessException
	 */
	public TransactionStatus deleteQuoteTemplateMaster(QuoteTemplateMasterPojo supplierMasterPojo)
			throws BusinessException;

	/**
	 * Method to check whether the same template name already exists for this supplier
	 * 
	 * @param supplierVO
	 * @return boolean
	 * @throws BusinessException
	 */
	public boolean isQuoteTemplateNameUnique(SupplierVO supplierVO) throws BusinessException;

}
